package com.yayako.main.entity;

import java.util.Objects;

/**
 * 单词实体类
 *
 * @author cyy
 */
public class Word {

    /** 单词值 */
    private String value;
    /** 单词类型 */
    private Type type;

    public Word(String value, Type type) {
        this.value = value;
        this.type = type;
    }

    @Override
    public String toString() {
        return "( " + type + ",\t" + value + " \t)\n";
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }
        if (obj instanceof Word) {
            Word word = (Word) obj;
            return value.equals(word.value) && type.equals(word.type);
        }
        return false;
    }

    @Override
    public int hashCode() {
        return Objects.hash(value, type);
    }

    public enum Type {
        /** 关键字 */
        kw,
        /** 标识符 */
        id,
        /** 字面量 */
        literal,
        /** 特殊符号 */
        ks,
        /** 联系 */
        relation,
        /** 注释 */
        comment,
        /** 常量 */
        Const,
        /** 数字 */
        num,
        /** 非法单词 */
        error
    }
}
